/*******************************************************************************
  Copyright(c) 2009 Geoffrey Hausheer. All rights reserved.

  This program is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the Free
  Software Foundation; either version 2 of the License, or (at your option)
  any later version.

  This program is distributed in the hope that it will be useful, but WITHOUT
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  more details.

  You should have received a copy of the GNU General Public License along with
  this program; if not, write to the Free Software Foundation, Inc., 59
  Temple Place - Suite 330, Boston, MA  02111-1307, USA.

  The full GNU General Public License is included in this distribution in the
  file called LICENSE.

  Contact Information: dso-tonight-at-phracturedblue-dot-com
*******************************************************************************/

package dsotonight;

import java.awt.Color;
import java.util.Calendar;
import java.util.Hashtable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.decorator.Filter;
import org.jdesktop.swingx.decorator.FilterPipeline;
import org.jdesktop.swingx.decorator.PatternFilter;

/**
 *
 * @author ghaushe
 */
public class SearchPanel extends javax.swing.JPanel 
        implements DocumentListener {

    private RangeFilter filterType;
    private HashLookupPatternFilter filterName;
    private PatternFilter filterConst;
    private RAFilter filterRA;
    private NumericFilter filterDec;
    private NumericFilter filterVMag;
    private NumericFilter filterSB;
    private NumericFilter filterMinSize;
    private NumericFilter filterMaxSize;
    private org.jdesktop.swingx.JXTable table;
    double lonW;
    double latN;

    /** Creates new form SearchPanel */
    public SearchPanel() {
        initComponents();
        minRAField.getDocument().addDocumentListener(this);
        maxRAField.getDocument().addDocumentListener(this);
        minDecField.getDocument().addDocumentListener(this);
        maxDecField.getDocument().addDocumentListener(this);
        minVMagField.getDocument().addDocumentListener(this);
        maxVMagField.getDocument().addDocumentListener(this);
        minSBField.getDocument().addDocumentListener(this);
        maxSBField.getDocument().addDocumentListener(this);
        minSizeField.getDocument().addDocumentListener(this);
        maxSizeField.getDocument().addDocumentListener(this);
        nameField.getDocument().addDocumentListener(this);
        constellationField.getDocument().addDocumentListener(this);
    }
    
    public void initSearch(JXTable table, double lonW, double latN) {
        this.table = table;
        this.latN = latN;
        this.lonW = lonW;

        initFilters();

        setLonLat(lonW, latN);
        
        setTypeButtons(new boolean[]{true, true, true, true, true, true, true, true, true, true});
                
        //By default filters are off for the following, so no need to set min/max values
        minSizeField.setText("0");
        maxSizeField.setText("9999");
        
        minVMagField.setText("0");
        maxVMagField.setText("9999");
        
        minSBField.setText("0");
        maxSBField.setText("9999");
        
        constellationField.setText("");
        nameField.setText("");

        table.setFilters(new FilterPipeline(
                new Filter [] {filterName, filterType, filterRA, filterDec, filterConst, filterVMag, filterSB, filterMaxSize, filterMinSize}));
        
    }
    public void setLonLat(double lonW, double latN) {
        double jDate = JulianDate.toJulian(Calendar.getInstance());
        double jSunRiseSet[] = JulianDate.sunRiseSet(jDate, lonW, latN); //Times in julianUTC

        // Today's sunset
        double minRA = SiderealDate.SiderealTime(jSunRiseSet[1], lonW) - 5.0; //subtract 5hrs to get stars near western horizon at sunset
        minRAField.setText(SiderealDate.RightAscensionToString(minRA));
        filterRA.setMin(minRA);

        // Tommorow's sunrise
        double maxRA = SiderealDate.SiderealTime(jSunRiseSet[0] + 1.0, lonW) + 5.0; //add 5hrs to get stars near eastern horizon at sunrise
        maxRAField.setText(SiderealDate.RightAscensionToString(maxRA));
        filterRA.setMax(maxRA);

        double minDec = latN - 90;
        minDecField.setText(SiderealDate.DeclinationToString(minDec));
        filterDec.setMin(minDec);

        double maxDec = latN + 90;
        maxDecField.setText(SiderealDate.DeclinationToString(maxDec));
        filterDec.setMax(maxDec);

    }

    public void setLongitude(double lonW) {
        this.lonW = lonW;
        setLonLat(lonW, latN);
    }
    public void setLatitude(double latN) {
        this.latN = latN;
        setLonLat(lonW, latN);
    }
    private void initFilters() {
        Hashtable hashtable = ((SkyDBTableModel)table.getModel()).getHash();
        filterName = new HashLookupPatternFilter(hashtable, null, 0, table.getColumn("Name").getModelIndex());
        filterType = new RangeFilter(10,table.getColumn("Type").getModelIndex() );
        filterRA = new RAFilter(Double.NaN, Double.NaN, table.getColumn("RA").getModelIndex());
        filterDec = new NumericFilter(Double.NaN, Double.NaN, table.getColumn("Dec").getModelIndex());
        filterConst = new PatternFilter(null, 0, table.getColumn("Constellation").getModelIndex());
        filterVMag = new NumericFilter(Double.NaN, Double.NaN, table.getColumn("VMag").getModelIndex());
        filterSB = new NumericFilter(Double.NaN, Double.NaN, table.getColumn("SB").getModelIndex());
        filterMaxSize = new NumericFilter(Double.NaN, Double.NaN, table.getColumn("MaxSize").getModelIndex());
        filterMinSize = new NumericFilter(Double.NaN, Double.NaN, table.getColumn("MinSize").getModelIndex());
    }

    private void setTypeButtons(boolean types[]) {
        int count = 0;

        typeButton1.setSelected(false);
        typeButton2.setSelected(false);
        typeButton3.setSelected(false);
        typeButton4.setSelected(false);
        typeButton5.setSelected(false);
        typeButton6.setSelected(false);
        typeButton7.setSelected(false);
        typeButton8.setSelected(false);
        typeButton9.setSelected(false);
        typeButton10.setSelected(false);
        typeButtonAll.setSelected(false);
        for (int i = 0; i < types.length; i++) {
            if (!types[i]) {
                continue;
            }
            count = count + 1;
            switch (i + 1) {
                case 1:
                    typeButton1.setSelected(true);
                    break;
                case 2:
                    typeButton2.setSelected(true);
                    break;
                case 3:
                    typeButton3.setSelected(true);
                    break;
                case 4:
                    typeButton4.setSelected(true);
                    break;
                case 5:
                    typeButton5.setSelected(true);
                    break;
                case 6:
                    typeButton6.setSelected(true);
                    break;
                case 7:
                    typeButton7.setSelected(true);
                    break;
                case 8:
                    typeButton8.setSelected(true);
                    break;
                case 9:
                    typeButton9.setSelected(true);
                    break;
                case 10:
                    typeButton10.setSelected(true);
                    break;
            }
        }
        if (count == 10) {
            typeButtonAll.setSelected(true);
        }
        filterType.setall(types);
    }

        void updateTextField(DocumentEvent ev) {
        if (ev.getDocument().equals(minRAField.getDocument())) {
            Double ra = SiderealDate.stringToRightAscension(minRAField.getText());
            if (ra.isNaN()) {
                minRAField.setBackground(Color.red);
            } else {
                minRAField.setBackground(Color.white);
                filterRA.setMin(ra);

            }
        } else if (ev.getDocument().equals(maxRAField.getDocument())) {
            Double ra = SiderealDate.stringToRightAscension(maxRAField.getText());
            if (ra.isNaN()) {
                maxRAField.setBackground(Color.red);
            } else {
                maxRAField.setBackground(Color.white);
                filterRA.setMax(ra);
            }
        } else if (ev.getDocument().equals(minDecField.getDocument())) {
            Double dec = SiderealDate.stringToDeclination(minDecField.getText());
            if (dec.isNaN()) {
                minDecField.setBackground(Color.red);
            } else {
                minDecField.setBackground(Color.white);
                filterDec.setMin(dec);
            }
        } else if (ev.getDocument().equals(maxDecField.getDocument())) {
            Double dec = SiderealDate.stringToDeclination(maxDecField.getText());
            if (dec.isNaN()) {
                maxDecField.setBackground(Color.red);
            } else {
                maxDecField.setBackground(Color.white);
                filterDec.setMax(dec);
            }
        } else if (ev.getDocument().equals(minVMagField.getDocument())) {
            try {
                Double val = Double.parseDouble(minVMagField.getText());
                minVMagField.setBackground(Color.white);
                filterVMag.setMin(val);
            } catch (Exception e) {
                minVMagField.setBackground(Color.red);
            }
        } else if (ev.getDocument().equals(maxVMagField.getDocument())) {
            try {
                Double val = Double.parseDouble(maxVMagField.getText());
                maxVMagField.setBackground(Color.white);
                filterVMag.setMax(val);
            } catch (Exception e) {
                maxVMagField.setBackground(Color.red);
            }
        } else if (ev.getDocument().equals(minSBField.getDocument())) {
            try {
                Double val = Double.parseDouble(minSBField.getText());
                minSBField.setBackground(Color.white);
                filterSB.setMin(val);
            } catch (Exception e) {
                minSBField.setBackground(Color.red);
            }
        } else if (ev.getDocument().equals(maxSBField.getDocument())) {
            try {
                Double val = Double.parseDouble(maxSBField.getText());
                maxSBField.setBackground(Color.white);
                filterSB.setMax(val);
            } catch (Exception e) {
                maxSBField.setBackground(Color.red);
            }
        } else if (ev.getDocument().equals(minSizeField.getDocument())) {
            try {
                Double val = Double.parseDouble(minSizeField.getText());
                minSizeField.setBackground(Color.white);
                filterMinSize.setMin(val);
            } catch (Exception e) {
                minSizeField.setBackground(Color.red);
            }
        } else if (ev.getDocument().equals(maxSizeField.getDocument())) {
            try {
                Double val = Double.parseDouble(maxSizeField.getText());
                maxSizeField.setBackground(Color.white);
                filterMaxSize.setMax(val);
            } catch (Exception e) {
                maxSizeField.setBackground(Color.red);
            }
        } else if (ev.getDocument().equals(nameField.getDocument())) {
            String name = nameField.getText();
            Pattern p = Pattern.compile("^([a-zA-Z]+)\\s*(\\d.*)$");
            Matcher m = p.matcher(name);
            if (m.find()) {
                name = m.group(1) + "\\s*" + m.group(2);
            }
            filterName.setPattern(name, Pattern.CASE_INSENSITIVE);
        } else if (ev.getDocument().equals(constellationField.getDocument())) {
            filterConst.setPattern(constellationField.getText(), 0);
        }
    }

        // DocumentListener methods

    public void insertUpdate(DocumentEvent ev) {
        updateTextField(ev);
    }

    public void removeUpdate(DocumentEvent ev) {
        updateTextField(ev);
    }

    public void changedUpdate(DocumentEvent ev) {
        updateTextField(ev);

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel9 = new javax.swing.JLabel();
        jPanel3 = new javax.swing.JPanel();
        jLabel10 = new javax.swing.JLabel();
        typeButton1 = new javax.swing.JCheckBox();
        typeButton2 = new javax.swing.JCheckBox();
        typeButton3 = new javax.swing.JCheckBox();
        typeButton4 = new javax.swing.JCheckBox();
        typeButton5 = new javax.swing.JCheckBox();
        typeButton6 = new javax.swing.JCheckBox();
        typeButton7 = new javax.swing.JCheckBox();
        typeButton8 = new javax.swing.JCheckBox();
        typeButton9 = new javax.swing.JCheckBox();
        typeButton10 = new javax.swing.JCheckBox();
        typeButtonAll = new javax.swing.JCheckBox();
        jLabel11 = new javax.swing.JLabel();
        jPanel4 = new javax.swing.JPanel();
        jLabel12 = new javax.swing.JLabel();
        jLabel17 = new javax.swing.JLabel();
        minRAField = new javax.swing.JTextField();
        jLabel18 = new javax.swing.JLabel();
        maxRAField = new javax.swing.JTextField();
        jCheckBox12 = new javax.swing.JCheckBox();
        jPanel5 = new javax.swing.JPanel();
        jLabel19 = new javax.swing.JLabel();
        jLabel20 = new javax.swing.JLabel();
        minDecField = new javax.swing.JTextField();
        jLabel21 = new javax.swing.JLabel();
        maxDecField = new javax.swing.JTextField();
        jCheckBox13 = new javax.swing.JCheckBox();
        nameField = new javax.swing.JTextField();
        constellationField = new javax.swing.JTextField();
        jPanel6 = new javax.swing.JPanel();
        jLabel13 = new javax.swing.JLabel();
        jLabel22 = new javax.swing.JLabel();
        minVMagField = new javax.swing.JTextField();
        jLabel23 = new javax.swing.JLabel();
        maxVMagField = new javax.swing.JTextField();
        jCheckBox14 = new javax.swing.JCheckBox();
        jPanel7 = new javax.swing.JPanel();
        jLabel24 = new javax.swing.JLabel();
        jLabel25 = new javax.swing.JLabel();
        minSBField = new javax.swing.JTextField();
        jLabel26 = new javax.swing.JLabel();
        maxSBField = new javax.swing.JTextField();
        jCheckBox15 = new javax.swing.JCheckBox();
        jPanel8 = new javax.swing.JPanel();
        jLabel14 = new javax.swing.JLabel();
        jLabel27 = new javax.swing.JLabel();
        minSizeField = new javax.swing.JTextField();
        jLabel28 = new javax.swing.JLabel();
        maxSizeField = new javax.swing.JTextField();
        jCheckBox16 = new javax.swing.JCheckBox();

        setName("Form"); // NOI18N

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance().getContext().getResourceMap(SearchPanel.class);
        jLabel9.setText(resourceMap.getString("jLabel9.text")); // NOI18N
        jLabel9.setName("jLabel9"); // NOI18N

        jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jPanel3.setName("jPanel3"); // NOI18N

        jLabel10.setText(resourceMap.getString("jLabel10.text")); // NOI18N
        jLabel10.setName("jLabel10"); // NOI18N

        typeButton1.setText(resourceMap.getString("typeButton1.text")); // NOI18N
        typeButton1.setName("typeButton1"); // NOI18N
        typeButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                typeButton1ActionPerformed(evt);
            }
        });

        typeButton2.setText(resourceMap.getString("typeButton2.text")); // NOI18N
        typeButton2.setName("typeButton2"); // NOI18N
        typeButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                typeButton2ActionPerformed(evt);
            }
        });

        typeButton3.setText(resourceMap.getString("typeButton3.text")); // NOI18N
        typeButton3.setName("typeButton3"); // NOI18N
        typeButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                typeButton3ActionPerformed(evt);
            }
        });

        typeButton4.setText(resourceMap.getString("typeButton4.text")); // NOI18N
        typeButton4.setName("typeButton4"); // NOI18N
        typeButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                typeButton4ActionPerformed(evt);
            }
        });

        typeButton5.setText(resourceMap.getString("typeButton5.text")); // NOI18N
        typeButton5.setName("typeButton5"); // NOI18N
        typeButton5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                typeButton5ActionPerformed(evt);
            }
        });

        typeButton6.setText(resourceMap.getString("typeButton6.text")); // NOI18N
        typeButton6.setName("typeButton6"); // NOI18N
        typeButton6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                typeButton6ActionPerformed(evt);
            }
        });

        typeButton7.setText(resourceMap.getString("typeButton7.text")); // NOI18N
        typeButton7.setName("typeButton7"); // NOI18N
        typeButton7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                typeButton7ActionPerformed(evt);
            }
        });

        typeButton8.setText(resourceMap.getString("typeButton8.text")); // NOI18N
        typeButton8.setName("typeButton8"); // NOI18N
        typeButton8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                typeButton8ActionPerformed(evt);
            }
        });

        typeButton9.setText(resourceMap.getString("typeButton9.text")); // NOI18N
        typeButton9.setName("typeButton9"); // NOI18N
        typeButton9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                typeButton9ActionPerformed(evt);
            }
        });

        typeButton10.setText(resourceMap.getString("typeButton10.text")); // NOI18N
        typeButton10.setName("typeButton10"); // NOI18N
        typeButton10.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                typeButton10ActionPerformed(evt);
            }
        });

        typeButtonAll.setText(resourceMap.getString("typeButtonAll.text")); // NOI18N
        typeButtonAll.setName("typeButtonAll"); // NOI18N
        typeButtonAll.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                typeButtonAllActionPerformed(evt);
            }
        });

        org.jdesktop.layout.GroupLayout jPanel3Layout = new org.jdesktop.layout.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(typeButton7)
                    .add(jPanel3Layout.createSequentialGroup()
                        .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(typeButton1)
                            .add(jLabel10)
                            .add(typeButton4))
                        .add(18, 18, 18)
                        .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(typeButtonAll)
                            .add(typeButton2)
                            .add(typeButton5)
                            .add(typeButton8))
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(typeButton9)
                            .add(typeButton6)
                            .add(typeButton10)
                            .add(typeButton3))))
                .addContainerGap(33, Short.MAX_VALUE))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel3Layout.createSequentialGroup()
                .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel10)
                    .add(typeButtonAll)
                    .add(typeButton10))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(typeButton1)
                    .add(typeButton2)
                    .add(typeButton3))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(typeButton4)
                    .add(typeButton5)
                    .add(typeButton6))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(typeButton7)
                    .add(typeButton9)
                    .add(typeButton8))
                .addContainerGap(12, Short.MAX_VALUE))
        );

        jLabel11.setText(resourceMap.getString("jLabel11.text")); // NOI18N
        jLabel11.setName("jLabel11"); // NOI18N

        jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jPanel4.setName("jPanel4"); // NOI18N

        jLabel12.setText(resourceMap.getString("jLabel12.text")); // NOI18N
        jLabel12.setName("jLabel12"); // NOI18N

        jLabel17.setText(resourceMap.getString("jLabel17.text")); // NOI18N
        jLabel17.setName("jLabel17"); // NOI18N

        minRAField.setText(resourceMap.getString("minRAField.text")); // NOI18N
        minRAField.setName("minRAField"); // NOI18N

        jLabel18.setText(resourceMap.getString("jLabel18.text")); // NOI18N
        jLabel18.setName("jLabel18"); // NOI18N

        maxRAField.setText(resourceMap.getString("maxRAField.text")); // NOI18N
        maxRAField.setName("maxRAField"); // NOI18N
        maxRAField.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                maxRAFieldKeyTyped(evt);
            }
        });

        jCheckBox12.setText(resourceMap.getString("jCheckBox12.text")); // NOI18N
        jCheckBox12.setName("jCheckBox12"); // NOI18N

        org.jdesktop.layout.GroupLayout jPanel4Layout = new org.jdesktop.layout.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel4Layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jPanel4Layout.createSequentialGroup()
                        .add(jLabel17)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                        .add(minRAField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jLabel18))
                    .add(jLabel12))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jCheckBox12)
                    .add(maxRAField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 172, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel4Layout.createSequentialGroup()
                .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel12)
                    .add(jCheckBox12))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel17)
                    .add(minRAField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jLabel18)
                    .add(maxRAField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jPanel5.setName("jPanel5"); // NOI18N

        jLabel19.setText(resourceMap.getString("jLabel19.text")); // NOI18N
        jLabel19.setName("jLabel19"); // NOI18N

        jLabel20.setText(resourceMap.getString("jLabel20.text")); // NOI18N
        jLabel20.setName("jLabel20"); // NOI18N

        minDecField.setText(resourceMap.getString("minDecField.text")); // NOI18N
        minDecField.setName("minDecField"); // NOI18N

        jLabel21.setText(resourceMap.getString("jLabel21.text")); // NOI18N
        jLabel21.setName("jLabel21"); // NOI18N

        maxDecField.setText(resourceMap.getString("maxDecField.text")); // NOI18N
        maxDecField.setName("maxDecField"); // NOI18N

        jCheckBox13.setText(resourceMap.getString("jCheckBox13.text")); // NOI18N
        jCheckBox13.setName("jCheckBox13"); // NOI18N

        org.jdesktop.layout.GroupLayout jPanel5Layout = new org.jdesktop.layout.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jPanel5Layout.createSequentialGroup()
                        .add(jLabel20)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                        .add(minDecField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jLabel21))
                    .add(jLabel19))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(maxDecField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 172, Short.MAX_VALUE)
                    .add(jCheckBox13))
                .addContainerGap())
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel5Layout.createSequentialGroup()
                .add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel19)
                    .add(jCheckBox13))
                .add(11, 11, 11)
                .add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel20)
                    .add(minDecField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jLabel21)
                    .add(maxDecField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        nameField.setText(resourceMap.getString("nameField.text")); // NOI18N
        nameField.setName("nameField"); // NOI18N

        constellationField.setText(resourceMap.getString("constellationField.text")); // NOI18N
        constellationField.setName("constellationField"); // NOI18N

        jPanel6.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jPanel6.setName("jPanel6"); // NOI18N

        jLabel13.setText(resourceMap.getString("jLabel13.text")); // NOI18N
        jLabel13.setName("jLabel13"); // NOI18N

        jLabel22.setText(resourceMap.getString("jLabel22.text")); // NOI18N
        jLabel22.setName("jLabel22"); // NOI18N

        minVMagField.setText(resourceMap.getString("minVMagField.text")); // NOI18N
        minVMagField.setName("minVMagField"); // NOI18N

        jLabel23.setText(resourceMap.getString("jLabel23.text")); // NOI18N
        jLabel23.setName("jLabel23"); // NOI18N

        maxVMagField.setText(resourceMap.getString("maxVMagField.text")); // NOI18N
        maxVMagField.setName("maxVMagField"); // NOI18N

        jCheckBox14.setText(resourceMap.getString("jCheckBox14.text")); // NOI18N
        jCheckBox14.setName("jCheckBox14"); // NOI18N

        org.jdesktop.layout.GroupLayout jPanel6Layout = new org.jdesktop.layout.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(
            jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel6Layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jPanel6Layout.createSequentialGroup()
                        .add(jLabel22)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                        .add(minVMagField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jLabel23))
                    .add(jLabel13))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jCheckBox14)
                    .add(maxVMagField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 172, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel6Layout.setVerticalGroup(
            jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel6Layout.createSequentialGroup()
                .add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel13)
                    .add(jCheckBox14))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel22)
                    .add(minVMagField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jLabel23)
                    .add(maxVMagField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel7.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jPanel7.setName("jPanel7"); // NOI18N

        jLabel24.setText(resourceMap.getString("jLabel24.text")); // NOI18N
        jLabel24.setName("jLabel24"); // NOI18N

        jLabel25.setText(resourceMap.getString("jLabel25.text")); // NOI18N
        jLabel25.setName("jLabel25"); // NOI18N

        minSBField.setText(resourceMap.getString("minSBField.text")); // NOI18N
        minSBField.setName("minSBField"); // NOI18N

        jLabel26.setText(resourceMap.getString("jLabel26.text")); // NOI18N
        jLabel26.setName("jLabel26"); // NOI18N

        maxSBField.setText(resourceMap.getString("maxSBField.text")); // NOI18N
        maxSBField.setName("maxSBField"); // NOI18N

        jCheckBox15.setText(resourceMap.getString("jCheckBox15.text")); // NOI18N
        jCheckBox15.setName("jCheckBox15"); // NOI18N

        org.jdesktop.layout.GroupLayout jPanel7Layout = new org.jdesktop.layout.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(
            jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel7Layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jPanel7Layout.createSequentialGroup()
                        .add(jLabel25)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                        .add(minSBField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jLabel26))
                    .add(jLabel24))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jCheckBox15)
                    .add(maxSBField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 172, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel7Layout.setVerticalGroup(
            jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel7Layout.createSequentialGroup()
                .add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel24)
                    .add(jCheckBox15))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(jPanel7Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel25)
                    .add(minSBField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jLabel26)
                    .add(maxSBField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel8.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jPanel8.setName("jPanel8"); // NOI18N

        jLabel14.setText(resourceMap.getString("jLabel14.text")); // NOI18N
        jLabel14.setName("jLabel14"); // NOI18N

        jLabel27.setText(resourceMap.getString("jLabel27.text")); // NOI18N
        jLabel27.setName("jLabel27"); // NOI18N

        minSizeField.setText(resourceMap.getString("minSizeField.text")); // NOI18N
        minSizeField.setName("minSizeField"); // NOI18N

        jLabel28.setText(resourceMap.getString("jLabel28.text")); // NOI18N
        jLabel28.setName("jLabel28"); // NOI18N

        maxSizeField.setText(resourceMap.getString("maxSizeField.text")); // NOI18N
        maxSizeField.setName("maxSizeField"); // NOI18N

        jCheckBox16.setText(resourceMap.getString("jCheckBox16.text")); // NOI18N
        jCheckBox16.setName("jCheckBox16"); // NOI18N

        org.jdesktop.layout.GroupLayout jPanel8Layout = new org.jdesktop.layout.GroupLayout(jPanel8);
        jPanel8.setLayout(jPanel8Layout);
        jPanel8Layout.setHorizontalGroup(
            jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel8Layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jPanel8Layout.createSequentialGroup()
                        .add(jLabel27)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                        .add(minSizeField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jLabel28))
                    .add(jLabel14))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jCheckBox16)
                    .add(maxSizeField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 172, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel8Layout.setVerticalGroup(
            jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel8Layout.createSequentialGroup()
                .add(jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel14)
                    .add(jCheckBox16))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel27)
                    .add(minSizeField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jLabel28)
                    .add(maxSizeField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel8, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel7, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel6, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel5, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jLabel11)
                            .add(jLabel9))
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(nameField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 296, Short.MAX_VALUE)
                            .add(constellationField))))
                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel9)
                    .add(nameField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .add(4, 4, 4)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel11)
                    .add(constellationField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(jPanel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel6, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel7, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel8, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
    }// </editor-fold>//GEN-END:initComponents

    private void typeButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_typeButton1ActionPerformed
        filterType.set(0, typeButton1.isSelected());
}//GEN-LAST:event_typeButton1ActionPerformed

    private void typeButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_typeButton2ActionPerformed
        filterType.set(1, typeButton2.isSelected());
}//GEN-LAST:event_typeButton2ActionPerformed

    private void typeButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_typeButton3ActionPerformed
        filterType.set(2, typeButton3.isSelected());
}//GEN-LAST:event_typeButton3ActionPerformed

    private void typeButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_typeButton4ActionPerformed
        filterType.set(3, typeButton4.isSelected());
}//GEN-LAST:event_typeButton4ActionPerformed

    private void typeButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_typeButton5ActionPerformed
        filterType.set(4, typeButton5.isSelected());
}//GEN-LAST:event_typeButton5ActionPerformed

    private void typeButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_typeButton6ActionPerformed
        filterType.set(5, typeButton6.isSelected());
}//GEN-LAST:event_typeButton6ActionPerformed

    private void typeButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_typeButton7ActionPerformed
        filterType.set(6, typeButton7.isSelected());
}//GEN-LAST:event_typeButton7ActionPerformed

    private void typeButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_typeButton8ActionPerformed
        filterType.set(7, typeButton8.isSelected());
}//GEN-LAST:event_typeButton8ActionPerformed

    private void typeButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_typeButton9ActionPerformed
        filterType.set(8, typeButton9.isSelected());
}//GEN-LAST:event_typeButton9ActionPerformed

    private void typeButton10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_typeButton10ActionPerformed
        filterType.set(9, typeButton10.isSelected());
}//GEN-LAST:event_typeButton10ActionPerformed

    private void typeButtonAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_typeButtonAllActionPerformed
        boolean newState[];
        if (typeButtonAll.isSelected()) {
            newState = new boolean[]{true, true, true, true, true, true, true, true, true, true};
        } else {
            newState = new boolean[]{false, false, false, false, false, false, false, false, false, false};
        }
        setTypeButtons(newState);
}//GEN-LAST:event_typeButtonAllActionPerformed

    private void maxRAFieldKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_maxRAFieldKeyTyped
        // TODO add your handling code here:
}//GEN-LAST:event_maxRAFieldKeyTyped


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JTextField constellationField;
    private javax.swing.JCheckBox jCheckBox12;
    private javax.swing.JCheckBox jCheckBox13;
    private javax.swing.JCheckBox jCheckBox14;
    private javax.swing.JCheckBox jCheckBox15;
    private javax.swing.JCheckBox jCheckBox16;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel21;
    private javax.swing.JLabel jLabel22;
    private javax.swing.JLabel jLabel23;
    private javax.swing.JLabel jLabel24;
    private javax.swing.JLabel jLabel25;
    private javax.swing.JLabel jLabel26;
    private javax.swing.JLabel jLabel27;
    private javax.swing.JLabel jLabel28;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JTextField maxDecField;
    private javax.swing.JTextField maxRAField;
    private javax.swing.JTextField maxSBField;
    private javax.swing.JTextField maxSizeField;
    private javax.swing.JTextField maxVMagField;
    private javax.swing.JTextField minDecField;
    private javax.swing.JTextField minRAField;
    private javax.swing.JTextField minSBField;
    private javax.swing.JTextField minSizeField;
    private javax.swing.JTextField minVMagField;
    private javax.swing.JTextField nameField;
    private javax.swing.JCheckBox typeButton1;
    private javax.swing.JCheckBox typeButton10;
    private javax.swing.JCheckBox typeButton2;
    private javax.swing.JCheckBox typeButton3;
    private javax.swing.JCheckBox typeButton4;
    private javax.swing.JCheckBox typeButton5;
    private javax.swing.JCheckBox typeButton6;
    private javax.swing.JCheckBox typeButton7;
    private javax.swing.JCheckBox typeButton8;
    private javax.swing.JCheckBox typeButton9;
    private javax.swing.JCheckBox typeButtonAll;
    // End of variables declaration//GEN-END:variables

}
